[GitHub] ブランチの保護設定を活用しよう 【レビューが通るまでマージさせんぞ】
ブランチを保護していますか?
master ブランチにマージしたらテストに失敗! みたいな経験をしたことはないでしょうか?開発の中心となるブランチは、問題なく動作する状態を健全に保ちたいですよね。
GitHub では、リポジトリの設定にて ブランチの保護 が可能です。この機能を使うと、以下のような保護を実施できます。
- CIが通らなければマージできない
- 他のメンバーからレビューを承認(Approve)されなければマージできない
- 特定のメンバーはマージできない
設定方法
ブランチの保護の設定は「Settings」の「Branches」から行うことができます。何もコミットがないリポジトリは、設定そのものが出てきませんのでご注意ください。
「Protect branches」セクションの「Choose a branch...」をクリックし、保護対象とするブランチを選択します。
ページが切り替わります。「Protect this branch」にチェックを入れると、ブランチをどのように保護するか設定が表示されます。
設定項目を確認する
保護設定は、何を許可して何を拒否するのか、詳細に設定することができます。ここで、各設定項目について確認していきましょう。
Require pull request reviews before merging
保護しているブランチに対してマージする前に、プルリクエストによるレビューを必須にする設定です。この設定を有効化すると、プルリクエストに対して、承認(Approve)されるまではマージできなくなります。
Dismiss stale pull request approvals when new commits are pushed
プルリクエストが承認(Approve)されたあとは、すぐにマージせずコミットを追加することができます。そのような場合に、改めてレビューを必須にする設定です。改めて承認(Approve)されるまではマージできなくなります。
Require review from Code Owners
コードオーナーのレビューを必須にする設定です。コードオーナーはつい先日(2017年7月)に追加された機能です。.github/CODEOWNERS
に、以下のようなフォーマットで記載すると、ファイル単位でコードオーナーを指定できます。コミット対象のファイルのコードオーナーから承認(Approve)されるまでは、マージできなくなります。
# Lines starting with '#' are comments. # Each line is a file pattern followed by one or more owners. # These owners will be the default owners for everything in the repo. * @defunkt # Order is important. The last matching pattern has the most precedence. # So if a pull request only touches javascript files, only these owners # will be requested to review. *.js @octocat @github/js # You can also use email addresses if you prefer. docs/* [email protected]
Require status checks to pass before merging
リポジトリと CI などのサービスを連係している場合の設定です。例えば CI サービスと連携させている場合「プルリクエストのブランチの CI が成功させること」を必須にすることができます。ユニットテストに失敗した場合などに、マージできなくなります。
Require branches to be up to date before merging
リポジトリに対して何らかのサービスを連係させている場合、この欄に各サービスの一覧が表示されます。サービス別に保護の条件に含めるか設定できます。
Include administrators
管理ユーザーに、プルリクエストを強制的にマージさせることを許可するかしないかを設定できます。この項目にチェックを入れると、管理ユーザーであろうとも、承認(Approve)されるまでは、マージできなくなります。
レビューが通るまでマージできないようにする
「Require pull request reviews before merging」を設定した状態で、プルリクエストを作成してみましょう。下記のように、そのままではマージできません。
レビューをお願いしましょう。
レビューが承認(Approve)されると、マージできるようになります。
まとめ
開発の中心となるブランチを健全に保つため、ぜひ保護設定を行うようにしましょう。
しかしながら、開発初期は逆に手間になる場合もありえます。いつから適用すべきか、状況をよく考えて決める ことをオススメします。
参考
本記事は、以下の記事を参考に執筆いたしました。